﻿// AlloyMaiden.cpp : 定义应用程序的入口点。
//

#include "AlloyMaiden.h"
#include "framework.h"
#include "klog.h"


constexpr const char* LOG_FILE = "log.txt";

WindowApp app;

static void RegisterUnitTest(void);


int APIENTRY wWinMain(_In_ HINSTANCE hInstance,
    _In_opt_ HINSTANCE hPrevInstance, _In_ LPWSTR lpCmdLine,
    _In_ int nCmdShow) {

  // 针对调试版本开启运行时内存检查
#if defined(DEBUG) | defined(_DEBUG)
  _CrtSetDbgFlag(_CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF);
#endif

  // 这两行纯粹就是为了消除警告，因为不用到这两个参数。
  UNREFERENCED_PARAMETER(hPrevInstance);
  UNREFERENCED_PARAMETER(lpCmdLine);

  // 设置输出信息日志
  ikit::set_log_output_file(LOG_FILE, false);

  // 执行应用程序初始化:
  if (!app.Init(hInstance, nCmdShow)) {
    return FALSE;
  }

  // 初始化DirectX
  while (!app.IsLoaded()){
    app.RollEvents();
    app.Load(); // 逐级载入，能够刷新UI
  }

  // 这个Sleep是为了UI能够显示完100%进度。不然速度太快，直接飚过去了。
  Sleep(50);

  // 游戏主循环
  while (app.IsRunning()) {
    app.RollEvents();
    app.Update();
  }

  return 0;
}
